﻿using System;
using System.Collections.Generic;
using System.Linq.Expressions;

namespace NMA.Domain.Model.Service.Application
{
    using NMA.Domain.Model.DTO;
    using NMA.Domain.Shared.Paging;
using NMA.Domain.Model.Contract;

    public interface ICategoryFacade : IFacade
    {
        string UserName { get; set; }

        IEnumerable<CategoryDTO> All();
        int CountAllCategory();
        CategoryDTO GetById(Guid id);
        Guid Add(CategoryDTO entity);
        void Remove(CategoryDTO entity);
        void Remove(Guid id);
        void Update(CategoryDTO entity);
        IEnumerable<CategoryDTO> GetBy(Expression<Func<CategoryDTO, bool>> condition, Type identifyColumn);
        IPagedList<CategoryDTO> All(int pageIndex, int pageSize);
        IPagedList<CategoryDTO> All(int pageIndex, int pageSize,
            CategorySearchCriteria searchModel,
            string orderBy,
            bool ascending);
    }
}